package cz.vse.adventura.po1715.xforv00_forejt.hra;

import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.*;


/*******************************************************************************
 * Instance třídy {@code PříkazJdi} představuje kouzelný příkaz, který umožní
 * rychle ve hře zvítězit
 *
 * @author Vladimír Forejt
 */
public class PříkazKouzlo extends APříkaz {



//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================


//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public PříkazKouzlo()
    {
        super(pKOUZLO, pKOUZLOpopis);
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Vykouzlí novou finální místnost a přidá do batohu předmět Pas_s_vízem
     *
     * @param kouzlené slovo abraka
     * @return Text zprávy vypsané po provedení příkazu
     */
    @Override
    public String execute( String... parametry )
    {
        Hra h = Hra.getHra();
        Místnost aktuální = h.getActualPlace();
        Batoh batoh = Batoh.getBatoh();
        Předmět vízum = new Předmět(VIZUM);
        Místnost finální = h.getPlace(FINALNI);

        if (parametry.length == 0)  {
            return "Je potřeba zadat kouzelné slovíčko.";//==========>
        }
        String zaříkávadlo = parametry[0];
        if (!zaříkávadlo.equalsIgnoreCase("abraka")) {
            return "Tohle zaříkávadlo nic nevykouzlí. Zkuste jiné.";//==========>
        }
        if (!aktuální.getName().equalsIgnoreCase(DOMA))
        {
            return "Možné je kouzlit jen doma.";//==========>
        }
        if (!batoh.přidej(vízum)) {
            return "Rád bych kouzlil, ale máte plný batoh.";
        }
        aktuální.setSoused(finální);
        return "Vykouzlili jste si kouzelnou místnost. " +
                  "Můžete do ní přejít a ukončit hru.";

    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//     /***************************************************************************
//      * Testovací metoda.
//      */
//     public static void test()
//     {
//         PříkazJdi instance = new PříkazJdi();
//     }
//     /** @param args Parametry příkazového řádku - nepoužívané. */
//     public static void main(String[] args)  {  test();  }
}
